#include <iostream>
#include <list>
#include "UI.h"
#include "habitacio.h"
#include "hotel.h"
#include "reserva.h"

using namespace std;

int main( void ) {
	int opcioMenuPrincipal, opcioMenuSecundari;
	bool sortir;
	t_habitacio habitacio;
	list<t_habitacio> llistaHabitacions;
	list<t_habitacio>::iterator iteradorHabitacions;

	t_ui_comproba_reserva v_comprova_reserva;
	t_ui_demana_reserva v_demana_reserva;
	t_reserva reserva;

	do {
		opcioMenuPrincipal = menuPrincipal();
		sortir = opcioMenuPrincipal == 3;
		if (opcioMenuPrincipal == 1) {

			opcioMenuSecundari = menuHabitacions();
			if ( opcioMenuSecundari == 1 ) {
				//Crear habitació (afegir)
				habitacio = demanarDadesHabitacio();
				afegirHabitacio(habitacio);
			} else if (opcioMenuSecundari == 2) {
				//Mostrar totes les habitacions
				llistaHabitacions = demanarLlistaHabitacions();
				for ( iteradorHabitacions = llistaHabitacions.begin();
					  iteradorHabitacions != llistaHabitacions.end();
					  iteradorHabitacions++) {
					mostrarDadesHabitacio( *iteradorHabitacions );
				}
			}
		} else if (opcioMenuPrincipal == 2) {
			opcioMenuSecundari = menuReserves();
						if ( opcioMenuSecundari == 1 ) {
						 	//fer reserva
							v_demana_reserva = uiDemanaDadesFerReserva();
							if ( fesReserva(v_demana_reserva.aNomDe,
									        v_demana_reserva.dataInici,
									        v_demana_reserva.dataFi,
									        v_demana_reserva.nPlaces,
									        v_demana_reserva.volBany
											)
								) {
								mostraMissatgeOK();
							} else {
								mostraMissatgeKO();
							}

						} else if(opcioMenuSecundari == 2) {
							v_comprova_reserva = uiDemanaDadesComprobaReserva();
							reserva = getReserva(  v_comprova_reserva.aNomDe,
									               v_comprova_reserva.dataInici);
							MostraDadesReserva(reserva);
						}
		}
	} while (!sortir);
}
